iT邦幫忙

2023 iThome 鐵人賽

DAY 5
1
Mobile Development

Spring Boot+Android 30天 實戰開發 系列 第 5

【Day - 05】Spring Boot中常用的參數傳遞方式(下)

  • 分享至 

  • xImage
  •  

6、Cookie參數

6.1 Cookie參數的作用和用途

Cookie是一種在客戶端瀏覽器中儲存小型資料片段的機制,它常用於在瀏覽器和伺服器之間傳遞資訊。通過在瀏覽器中儲存資料,伺服器可以追蹤使用者會話、儲存使用者偏好設定以及實現身份驗證等功能。

6.2 獲取Cookie參數

在Spring Boot中,您可以使用@CookieValue註解來獲取Cookie參數。以下是一個簡單的示例:

@RestController
@RequestMapping("/api")
public class CookieController {

    @GetMapping("/cookie-info")
    public String getCookieInfo(@CookieValue(name = "sessionId", defaultValue = "none") String sessionId) {
        return "Session ID: " + sessionId;
    }
}

在這個示例中,我們使用了@CookieValue註解來獲取名為sessionId的Cookie參數。
Cookie參數在Web開發中是一種常見且有用的方式,它使得伺服器可以維護狀態並在客戶端之間共享資料。

6.3 測試Cookie參數

使用Postman進行測試:

  • 選擇GET請求類型,輸入URL http://localhost:8080/api/cookie-info
  • 在Headers選項卡中新增Cookie,如:
    Key: Cookie, Value: sessionId=mySessionIdValue
  • 發送請求,查看響應。
    圖片無法顯示

7、表單參數

在Web開發中,表單是一種常見的使用者互動方式,使用者可以透過表單向伺服器提交資料。表單參數是透過HTTP請求中的表單欄位來傳遞的,這些欄位可以包含文字、複選框、單選框等各種類型的資料。在Spring Boot中,您可以方便地處理來自HTML表單的參數。

7.1 Web表單中傳遞參數的方式

Web表單中的參數是透過表單欄位來傳遞的,這些欄位對應著HTML中的各種輸入元素。使用者在表單中輸入資料後,瀏覽器將這些資料封裝成HTTP請求,並將其傳送給伺服器。伺服器可以從請求中取得這些參數並進行處理。

7.2 示範如何處理HTML表單提交的參數

在Spring Boot中,您可以使用@RequestParam註解來獲取來自HTML表單的參數。以下是一個簡單的示例,透過使用Thymeleaf來產生表單頁面:

  • 在pom.xml添加thymeleaf依賴

    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-thymeleaf</artifactId>
    </dependency>
    
  • 建立Thymeleaf模板:
    src/main/resources/templates目錄下建立一個名為form.html的HTML檔案,這將是您的表單頁面模板。

  • 編寫表單頁面模板:
    編輯form.html,建立一個包含使用者名稱和密碼欄位的簡單表單。

<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">
<head>
    <title>Form Page</title>
</head>
<body>
    <h1>Form Page</h1>
    <form action="/process-form" method="post">
        <label for="username">Username:</label>
        <input type="text" id="username" name="username"><br>
        <label for="password">Password:</label>
        <input type="password" id="password" name="password"><br>
        <button type="submit">Submit</button>
    </form>
</body>
</html>
  • 處理HTML表餐參數的主要程式碼
@Controller
public class FormController {

    @GetMapping("/form")
    public String showForm() {
        return "form"; // 返回表單頁面
    }

    @PostMapping("/process-form")
    public String processForm(@RequestParam("username") String username,
                              @RequestParam("password") String password) {
        // 處理表單提交邏輯
        return "result"; // 返回處理結果頁面模板
    }
}
  • 測試:
    1. 啟動Spring Boot應用程式。
    2. 在瀏覽器中訪問:http://localhost:8080/form,您將看到生成的表單頁面。
      圖片無法顯示
    3. 輸入使用者名稱和密碼,點擊"Submit"按鈕。
    4. 表單資料將被提交到/process-form端點,處理結果將顯示在同一表單頁面上。
      圖片無法顯示

注意:這個示例中使用了Thymeleaf模板來生成表單頁面,並且使用了Spring Boot的Controller來處理表單提交。

這個示例可以幫助您建立一個簡單的使用Thymeleaf生成的表單頁面,並且在Spring Boot中處理表單資料。您可以根據需要擴展和修改程式碼,使其適應更複雜的場景。

8、文件上傳參數

8.1 文件上傳參數的作用和用途

文件上傳是一項常見任務,允許使用者將檔案傳遞給伺服器進行處理。這對於上傳圖片、文件、影片或其他檔案類型都非常有用。Spring Boot提供了方便的方式來處理文件上傳。

8.2 如何在Spring Boot中處理文件上傳

在Spring Boot中,您可以使用@RequestParam("file") MultipartFile file來處理上傳的文件。以下是一個簡單的示例:

@RestController
@RequestMapping("/api")
public class FileUploadController {

    private static final String UPLOAD_DIR = "./uploads/"; //文件上傳保存路徑

    @PostMapping("/upload")
    public String uploadFile(@RequestParam("file") MultipartFile file) {
        if(!file.isEmpty()) {
            try {
                byte[] bytes = file.getBytes();
                Path path = Paths.get(UPLOAD_DIR + file.getOriginalFilename());
                Files.write(path, bytes);
                return "File uploaded successfully!";
            } catch (IOException e) {
                return "File upload failed!";
            }
        }
        return "No file uploaded!";
    }
}

8.3 測試文件上傳參數

使用Postman進行測試:

  • 選擇POST請求類型,輸入URL http://localhost:8080/api/upload
  • 在Body選項卡中選擇"form-data"
  • 添加一個Key為file的字段,類型選擇"File",其Value值會出現一個"Selelct Files按鈕"供您選擇您的.txt文件(請確保文件大小不為0KB,否則即使有檔案也會被視為空文件)。
  • 發送請求,查看響應。
    圖片無法顯示
  • 成功上傳,可以在我們指定的路徑查看到這個上傳文件
    圖片無法顯示

9、總結

本文深入介紹了Spring Boot中常用的不同參數傳遞方式,從簡單的URL參數到複雜的請求體參數、路徑參數、查詢參數、請求頭參數、Cookie參數以及表單參數等。每種參數傳遞方式都有其特定的應用場景和用途,因此在開發過程中,選擇合適的參數傳遞方式非常重要。

通過使用Postman工具以及Thymeleaf模板引擎,我們詳細討論了每種參數傳遞方式的操作方法,並提供了實際示例幫助您更好地理解如何在Spring Boot應用中使用這些方式。


上一篇
【Day - 04】Spring Boot中常用的參數傳遞方式(上)
下一篇
【Day - 06】深入認識 Spring Boot 配置文件(上)
系列文
Spring Boot+Android 30天 實戰開發 30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

1 則留言

0
ii
iT邦新手 5 級 ‧ 2024-06-25 10:38:21

不好意思 我在做7.2範例的時候 出現以下錯誤
Whitelabel Error Page
This application has no explicit mapping for /error, so you are seeing this as a fallback.

Tue Jun 25 10:31:15 CST 2024
There was an unexpected error (type=Internal Server Error, status=500).

不知道該如何解決...

我要留言

立即登入留言